#include "CudaEpiModel.h"

#ifndef CUDA_PARAM_H
#define CUDA_PARAM_H

extern EpiModel* model;

extern dRandVec* rand_vec;

extern dPersonVec* ppl_vec; 
extern dCommunityVec* comm_vec;
extern dTractVec* tract_vec;

// comm_worker* are unchanging vectors after cudaInitialization
extern dCommWorkerVec* comm_worker_vec; // information about who are the workers (non-residents) in this community
extern dIdxVec* comm_worker_start_vec; // ith element containing the start index of comm_worker_vec for community i
extern dIdxVec* comm_worker_end_vec;  // ith element containing the end index of comm_worker_vec for community i

// comm_visistor* dynamic change
extern dCommVisitorVec* comm_visitor_vec; // information about who are visitors in this community
extern dIdxVec* comm_visitor_start_vec; // ith element containing the start index of comm_visitor_vec for community i
extern dIdxVec* comm_visitor_end_vec; // ith element containing the end index of comm_visitor_vec for community i

// counting iterator, no change after cudaInitialization
extern dCommWorkerVec* comm_worker_counter;
extern dCommVisitorVec* comm_visitor_counter;

// use in night TAP
extern unsigned int* nNumTAPDone;
extern unsigned int* nNumWantAV;
extern unsigned int* nNumWantVaccine;
extern unsigned int* nNumAntiviralsUsed;

extern cudaError err;


#endif
